#include "../Math.hpp"
#include "../Platform.hpp"
#include "../Window.hpp"

namespace App {
class Application : public Data::Window::ICallbacks {
public:
  virtual void windowFocused();

  virtual void keyboardEvent(const Data::KeyboardEvent &event);

  virtual void windowSizeChanged(int w, int h);

  virtual void render();

  virtual void mouseEvent(const Data::MouseEvent &event);

  virtual void setup();

  virtual void renderEnd();

  virtual void renderStart();

  virtual void onGuiRender() = 0;

  virtual ~Application();
};
} // namespace App